/**外包企业门户网站,生成时间:2017-04-19 09:55:35**/
package com.xbdun.service.bmp.service.system;

import java.util.List;
import java.util.Map;

import com.xbdun.common.api.Client;
import com.xbdun.common.page.Pager;
import com.xbdun.dao.bmp.entity.XbdunDepartDo;
import com.xbdun.facade.bmp.request.system.DepartRequest;
import com.xbdun.facade.bmp.response.system.TreeNodeResponse;


/**
 * 部门
 * @ClassName XbdunDepartService
 * @author zhanggt
 * @2017-04-19 09:55:35
 */
public interface DepartService {
	
	/**
	 * 新增
	 * @param XbdunDepartDo 
	 */
	public Long addXbdunDepart(DepartRequest request, Client client)throws Exception;
	
	/**
	 *删除部门，必须是在该部门下不能在存在角色情况下才能够安全删除
	 *@param id 部门Code编号
	 *@param client 客户端
	 */
	public void delDepartByCode(Long id,Client client)throws Exception;
	
	/**
	 * 判断是否存在,不为null则是存在
	 * @param id 主键
	 * @return Long
	 */
	public boolean existById(long id)throws Exception;
	
	/**
	* @Title: updateById
	* @Description: 修改部门信息
	* @param request
	* @param client
	* @return void    返回类型
	 */
	public void updateById(DepartRequest request, Client client)throws Exception;
	
	/**
	 * 查询分页
	 * @param where			约束条件,键是对象属性其中条件都为and连接
	 * @param orderBy		排序条件
	 * @param pageNum   	当前索引页
	 * @param numPerPage	每页显示条数
	 * @return {@link Pager}
	 * @throws Exception
	 */
	public Pager<XbdunDepartDo> queryPager(Map<String,Object> where,String orderBy,int pageNum,int numPerPage);

	/**
	* @Title: queryTreeDepart
	* @Description: 获取当前机构下+平台预先设定所有部门
	* @param orgCode
	* @return List<TreeNodeResponse>    返回类型
	 */
	public List<TreeNodeResponse> queryTreeDepart(long orgCode)throws Exception;
}